#ifndef LOGIC_H
#define LOGIC_H

#ifdef cplusplus
extern "C"{
#endif

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <sys/shm.h>
#include "archivos.h"
#include "logic.h"


/*-------- Estructuras de datos ---------*/

typedef struct{
    int pid;
    int li,lf;
    float resultado;
    char listo; //Indica si el proceso termino o no
}Proceso;

typedef struct{
    float resultado1;
    float resultado2;
    char listo; //Indica si el resultado esta listo o no
}Resultado;

/*-------- Variables globales -------------------------------------*/

extern Operacion *operaciones;
extern Resultado *resultados;
extern Proceso *procesos;
extern int nro_procesos;


/*-------- Procedimientos -----------------------------------------*/

void manejador_senales(int nsenal);

//Asigna el trabajo a resolver por cada proceso
void generar_tabla_procesos(int nro_lineas);

//Permite o no que un proceso se siga ejecutando si el resultado que solicita ya esta listo
void resultado_l(int linea);

//Sustituye las lineas precedentes por los resultados correspondientes si existen
char* sustituir_l(int nro_operacion);

//Proceso principal
int proceso_z(char *nombre_arch,int timming);

#ifdef cplusplus
}
#endif

#endif // LOGIC_H
